#  1. 导入包
from selenium import webdriver
from time import sleep

from selenium.webdriver.support.select import Select
#  2. 浏览器操作
driver = webdriver.Edge()
# driver = webdriver.Chrome()
# driver = webdriver.Firefox()
driver.close()   # 关闭浏览器
driver.quit()    # 关闭浏览器以及浏览器驱动程序

# 3. 打开URL
driver.get("https://kaifa.baidu.com/")

# 4. 等待时间
sleep(10)
driver.implicitly_wait(3)  # 隐性等待时间为 3 秒

# 5. 切换框架/窗口
driver.switch_to.active_element()   # 定位到当前聚焦的元素上
driver.switch_to.alert()            # 切换到 alert 弹窗
driver.switch_to.default_content()  # 切换到主页面
# driver.switch_to.frame("编号或 name")
driver.switch_to.frame()            # 切换到某个 frame
# driver.switch_to.window(window_name)
driver.switch_to.window()          # 切换到指定的 window_name 页签
driver.switch_to.parent_frame()     # 切换到上一层的 frame

# 6. 定位页面元素
driver.find_element_by_id()
driver.find_element_by_xpath()
driver.find_element_by_name()
driver.find_element_by_tag_name()
driver.find_element_by_link_text()
driver.find_element_by_partial_link_text()
driver.find_element_by_class_name()

driver.find_elements_by_id()

# 用于识别下拉列表元素    :需要导入包  from selenium.webdriver.support.select import Select
Select(driver.find_element_by_id())


# 7. 页面元素的属性和方法
driver.title()                        # 获得网页标题
object = driver.find_element_by_id(110)
object.text                           # 获得页面元素的文本值---属性
object.get_attribute("name")          # 获得指定属性的值---属性
# 用于键盘输入数据
driver.find_element_by_name("username").send_keys("zhsan")
driver.find_element_by_name("password").send_keys("1")
# 支持单选按钮、复选框、命令按钮
driver.find_element_by_name("login").click()

# 需要导入包  from selenium.webdriver.support.select import Select
pojo = driver.find_element_by_name("depart")
Select(driver.find_element_by_name("depart")).select_by_visible_text("Denver")
Select(pojo).select_by_index()            #
Select(pojo).select_by_visible_text()
# 取消所有选项
Select(pojo).deselect_all()
# 取消对应 index 选项
Select(pojo).deselect_by_index()
# 取消对应 value 选项
Select(pojo).deselect_by_value()
# 取消对应文本选项
Select(pojo).deselect_by_visible_text()
# 返回第一个选项
Select(pojo).first_selected_option()
# 返回所有的选项
Select(pojo).all_selected_options()


